Shader "Custom/NormalBumpExample"
 {
     Properties
     {
         _MainTex ("Main Texture", 2D) = "white" {}
         _Bump ("Bump Map", 2D) = "bump" {}
         _BumpScale ("Bump Intensity", Range(0.1, 10)) = 1.0
        _FurLength ("Fur Length", Range(0.01, 0.1)) = 0.05
     }

     SubShader
     {
         Tags { "RenderType"="Opaque" }

         CGPROGRAM
         #pragma surface surf Lambert

         sampler2D _MainTex;
         sampler2D _Bump;
         float _BumpScale;
         half _FurLength;

         struct Input
         {
             float2 uv_MainTex;
             float2 uv_Bump;
         };

        half _FurLength;

        void vert(inout appdata_full v)
        {
            v.vertex.xyz += v.normal * _FurLength; // Add fur to the vertex position
        }

         void surf(Input IN, inout SurfaceOutput o)
         {
         half4 c =fixed4(1.0,1.0,1.0,1.0);

             // half4 c = tex2D(_MainTex, IN.uv_MainTex);
             half4 b = tex2D(_Bump, IN.uv_Bump);
             half3 normal = (b.xyz * 2.0 - 1.0) * _BumpScale;

             o.Normal = normalize(normal);
             o.Albedo = c.rgb;
             o.Alpha = c.a;
         }
         ENDCG
     }

     FallBack "Diffuse"
 }